﻿#pragma once

#define FULL_TEST 1
#define TEST_VERSION 1
#if (TEST_VERSION)
#define VERSION_150PSI 1
#else
#define VERSION_150PSI 0
#endif
// #define USE_ALS120

// 所有的宏、枚举、常量全在这里定义,和色谱无关的结构也在这里定义

#define USER_AUTHORITY_RUNINST 0x0001
#define USER_AUTHORITY_MODIFYINST 0x0002
#define USER_AUTHORITY_ALLOWINJECT 0x0004
#define USER_AUTHORITY_RUNSEQ 0x0008
#define USER_AUTHORITY_NEWSAMPLE 0x0010
#define USER_AUTHORITY_EDITSAMPLE 0x0020
#define USER_AUTHORITY_DELSAMPLE 0x0040
#define USER_AUTHORITY_EDITMETHOD 0x0080
#define USER_AUTHORITY_DELMETHOD 0x0100
#define USER_AUTHORITY_VIEWCALIB 0x0200
#define USER_AUTHORITY_EDITCALIB 0x0400
#define USER_AUTHORITY_USEOFFLINE 0x0800
#define USER_AUTHORITY_SAVECHROM 0x1000
#define USER_AUTHORITY_EDITREPORT 0x2000
#define USER_AUTHORITY_SIGN 0x4000
#define USER_AUTHORITY_DELECHROM 0x8000

#ifdef _MSC_VER
#else

#ifndef WM_USER
#define WM_USER 0x0400
#endif

#ifndef WORD
#define WORD unsigned short
#endif

#ifndef DWORD
#define DWORD uint32_t
#endif

#ifndef BYTE
#define BYTE unsigned char
#endif

#ifndef NEAR
#define NEAR
#endif

#ifndef FAR
#define FAR
#endif

#ifndef LPVOID
#define LPVOID void *
#endif

#ifndef LPINT
#define LPINT int32_t *
#endif

#ifndef PFLOAT
#define PFLOAT float *
#endif

#ifndef NULL
#define NULL ((void *)0)
#endif

#endif

// ADC => frmInstSettings:
enum TWM_ADC
{
    WM_ADC_ = WM_USER + 100, // ADC消息起始号
    WM_ADC_PORTDETECT,       // 通讯口侦测
    WM_ADC_CONNECT,          // 连线成功
    WM_ADC_BREAK,            // 断线
    WM_ADC_ORGPACKET,        // 原始数据包
    WM_ADC_ERRPACKET,        // ADC错误数据包
    WM_ADC_CMDRECVD,         // 收到ADC命令
    WM_ADC_SNREADY,          // 收到S/N
    WM_ADC_REMOTEON,         // 收到Remote信号
    WM_ADC_DATA_COME,        // 收到数据
    WM_ADC_DATA_BASELINE,    // 收到基线跟踪数据
    WM_ADC_DATA_SAMPLE,      // 收到样品信号
    WM_ADC_DATA_RESEND,      // 数据重发

    WM_ADC_MAX,
};

// IOC:
enum TWM_IOC
{
    WM_IOC_ = WM_ADC_MAX + 0, // IOC消息起始号
    WM_IOC_CARD_STATUS,       // IO模块连接状态
    WM_IOC_SHOW_RUNSTATUS,    // 显示运行状态
    WM_IOC_STATE_CHANGE,      // IO状态改变时
    WM_IOC_ON_START,          // ON开始IOC
    WM_IOC_ON_STOPA,          // ON停止/放弃IOC
    WM_IOC_ON_PAUSER,         // ON暂停/恢复IOC循环
    WM_IOC_SETTINGS_CHANGE,   // 设置改变时
    WM_IOC_DELETE_ITEM,       // 事件程序行删除时
    WM_IOC_OVERFLOW,          // 信号上溢
    WM_IOC_DOWNFLOW,          // 信号下溢

    WM_IOC_MAX,
};

// Squence:
enum TWM_SEQ
{
    WM_SEQ_ = WM_IOC_MAX + 0, // Squence消息起始号
    WM_SEQ_START_RUN,         // 开始序列样分析运行
    WM_SEQ_STOPA_RUN,         // 停止/取消序列样分析运行
    WM_SEQ_SHOW_RUNSTATUS,    // 序列运行状态
    WM_SEQ_SHOW_INJECTINFO,   // 显示当前进样信息(瓶位/重复次数/针序)
    WM_SEQ_ON_START_RUN,      // ON开始序列样分析运行
    WM_SEQ_ON_STOPA_RUN,      // ON停止/取消序列样分析运行
    WM_SEQ_ON_PAUSE_RUN,      // ON暂停/恢复序列样分析运行
    WM_SEQ_ON_PREPARE_INJ,    // ON当前项的进样前准备
    WM_SEQ_ON_START_INJ,      // ON开始当前项的进样分析
    WM_SEQ_ON_STOPA_INJ,      // ON停止/取消当前项的进样分析

    WM_SEQ_MAX,
};

// WorkSpace:
enum TWM_WKS
{
    WM_WKS_ = WM_SEQ_MAX + 0, // WorkSpace消息起始号
    WM_CONTROLLER_ATTACH,     // 设备打开状况
    WM_CONTROLLER_EXCEED,     // 设备打开超时
    WM_CONTROLLER_LINKUP,     // 设备连接状况
    WM_CONTROLLER_FINISHED,   // 设备初始化结束

    WM_WKS_MAX,
};

// Common:
enum TWM_COMMON
{
    WM_COMMON_ = WM_WKS_MAX + 0, // Common消息起始号
    WM_LICENCE_CHANGE,           // Licence数据改变时
    WM_CONFIGURE_APPLY,          // 系统配置信息改变时
    WM_CHANNELS_CHANGE,          // 通道数改变时
    WM_HAUNIT_CHANGE,            // 峰高/面积单位改变时
    WM_METRIC_CHANGE,            // 配样信息改变时
    WM_METHODSPEC_CHANGE,        // 方法索引数据改变时

    WM_FLUSHCBXCAT,
    WM_FLUSHCBXBATCH,
    WM_FLUSHCBXLOCA,

    WM_COMMON_MAX,
};

// frmDesktop:
enum TWM_DESKTOP
{
    WM_DESKTOP_ = WM_COMMON_MAX + 0, // frmDesktop消息起始号
    WM_FORM_EVENT,                   // 窗体事件
    WM_ONLINEHELP_CLOSE,             // TfrmOnlineHelp::FormClose()时
    WM_ONLINE_LOGSTATE,              // 通道窗体将要Login/Logout时
    WM_ONLINE_EVENT,                 // TfrmOnlineForm事件
    WM_OFFLINE_EVENT,                // TfrmOffLineForm事件
    WM_REPORT_EVENT,                 // TfrmReportViewer事件

    WM_ADCSTATE_CHANGE, // AD卡状态改变时
    WM_SIGPATH_CHANGE,  // 仪器信号通路改变时
    WM_CHSTATE_CHANGE,  // 做样窗体状态改变时
    WM_CHANNEL_SWITCH,  // 做样窗体切换
    WM_POSTPROCESS,     // 后处理(再处理/校正/报告)
    WM_QUITSYS,         // 退出系统
    WM_SHOW_MSG,        // ShowMsg()的激发消息
    WM_SHOW_MSGBOX,     // ShowMsgBox()的激发消息

    WM_ADCDETECTLOG,         // 显示AD卡通讯日志
    WM_AUTOLOGIN,            // 自动登录通道窗体
    WM_SETUP_INSTINFO,       // 设置仪器信息
    WM_CONFIGURE_OPEN,       // 显示系统配置信息
    WM_RefreshSmpCatItems,   // 刷新样品名列表
    WM_RefreshMethodItems,   // 刷新方法名列表
    WM_RefreshInstCondItems, // 刷新仪器条件名列表
    WM_NewOnlineForm,        // 新建做样窗体	//2011-04-28: ++++++
    WM_CalorifColumns,       // 燃气热值数据列选项   //2012-05-xx: ++++++

    WM_AdcBaseFreqChange, // 采集器基准频率改变时
    WM_OnTreePanelClosed, // 样品树关闭时
    WM_OnSmpPanelClosed,  // 做样框关闭时
    WM_ShowDataMergeDlg,  // 显示通道合并方案对话框

    WM_DESKTOP_MAX,
};

// frmOnlineForm:
enum TWM_ONLINE
{
    WM_ONLINE_ = WM_DESKTOP_MAX + 0, // frmOnlineForm消息起始号
    WM_START_SAMPLE,                 // 开始数据采集
    WM_STOPA_SAMPLE,                 // 停止/取消数据采集
    WM_START_SGLRUN,                 // 开始单一样分析运行
    WM_STOPA_SGLRUN,                 // 停止/取消单一样分析运行
    WM_ON_START_SAMPLE,              // ON开始数据采集	//2011-05-13: ++++++
    WM_ON_STOPA_SAMPLE,              // ON停止数据采集    //2011-05-13: ++++++
    WM_ON_START_SGLRUN,              // ON开始单一样分析运行
    WM_ON_STOPA_SGLRUN,              // ON停止/取消单一样分析运行

    WM_NewCatInfo,
    WM_PostProcess,
    WM_SetIdTr,
    WM_AddIdName,
    WM_PostIdtApply,
    WM_SAVEDATFILE,
    WM_MdyAnalMinutes,
    WM_LoadLogTree,
    WM_DataMerge,
    WM_DelLastOrgFile, // 删除刚做完的谱图文件  //2011-04-28: ++++++
    WM_ADJUST_ZERO,
    WM_SHOWTIMEINFO,
    WM_DLLERROR,
    WM_TESTIPARA,
    WM_NEEDLE_FOUND,
    WM_PFRuleChange,

    WM_SetPathFileRule,
    WM_MarkOnlineRunMode,
    WM_FlushSequence, // 刷新序列表及其下拉框
    WM_UpdateSeqCatNames,
    WM_OnRefreshSmpCatItems,
    WM_OnSmpCatChange,
    WM_OnSmpTypeChange,
    WM_OnSmpSnChange,
    WM_OnReAnalysis,
    WM_OnShowIdt,
    WM_OnShowResult,

    WM_FreezeAnalMinutes, // 冻结采集时长

    WM_ChangeSmpSetting,    // 改变样品设置
    WM_OnInstMethodChanged, // 仪器方法改变时
    WM_OnInstMethodCheck,   // 仪器方法检查变更

    WM_ONLINE_MAX,
};

// frmOfflineForm:
enum TWM_OFFLINE
{
    WM_OFFLINE_ = WM_ONLINE_MAX + 0, // frmOfflineForm消息起始号
    WM_TprgEventInValid,
    WM_TprgEventValid,

    WM_OFFLINE_MAX,
};

// frmInstCond:
enum TWM_INSTCOND
{
    WM_INSTCOND_ = WM_OFFLINE_MAX + 0, // frmInstCond消息起始号
    WM_QSortPumpGradItems,
    WM_QSortOvenTempItems,
    WM_DeletePrgItem,

    WM_INSTCOND_MAX,
};

// Others:
enum TWM_OTHERS
{
    WM_OTHERS_ = WM_INSTCOND_MAX + 0, // Others消息起始号
    // x => frmAdcDetectLog:
    WM_ADCLINKING,
    // frmAdcStatus:
    WM_RestorePortChecked,
    // fmViewOrgFile:
    WM_RestoreSelectDir,
    // frmCalibForm:
    WM_STDSMPLIST_CHANGE, // 标样表改变时

    WM_MYDATACHANGE,

    WM_OnProcessParamGrabed, // 套取谱图处理参数时
    WM_OnDeleteORGFile,      // 删除刚做完的谱图文件时

    WM_MYLOGIN2,

    WM_RECONNECT,

    WM_OTHERS_MAX,
};

#define CTLCMDFLAG 0xFFFF0000

#define __szDBConn \
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;Jet OLEDB:Database Password=%s"

#define szSampleTimeFormat "yy-mm-dd hh:nn"
#define Easy_APPTITLE "EASY3010"
#define Sepu_APPTITLE "SEPU3010"
#define Super_APPTITLE GBK__("超越-3010")
#define BKL_APPTITLE "BKL-3010"
#define QT_APPTITLE GBK__("科泰QT-1000Data")
#define Shimadzu_APPTITLE "SHIMADZU"
#define HX_APPTITLE GBK__("海欣HX-3010")
#define YH_APPTITLE "YH3010"
#define FL_APPTITLE /*"FL3010"*/ "FL9500"
#define LM_APPTITLE "LM3010"
#define CHEMS_APPTITLE "CHEM"    //"CHEMSTATION"		//2011-05-26: &&&&&&
#define BRIDGE_APPTITLE "BRIDGE" //"CHEMSTATION"		//2011-05-26: &&&&&&
#define TECHCOMP_APPTITLE "T2100"
#define KYD_APPTITLE "EASY3010K"
#define DYNAMICA_APPTITLE "AERO LINK"

#define _DefaXLabel_ "min"
#define _DefaXMinLabel_ "s"
#define _DefaYLabel_ "mV"
#define _DefaYMinLabel_ "uV"
#define _DefaYUnit_ 1000.0
#define _DefaYMinUnit_ 1.0
#define _DefaXMinUnitK_ 60.0

#define _ZeroFloat_ 0.000001
#define _Mantissa_ 0.0000000001 // 浮点精度尾数	//2013-08-20: ++++++

#define _T0_ 273.15        // 0℃的绝对温度值
#define _P0_ 101.325       // 1个标准大气压 = 101.325kPa
#define _Tc_(k) (k - _T0_) // 绝对温度[K]->摄氏温度[℃]
#define _Tk_(c) (c + _T0_) // 摄氏温度[℃]->绝对温度[K]

#define _Start_ true
#define _Stop_ false
#define _Abort_ true
#define _Confirm_ true
#define _FinalInj_ true //(ALSx2)_2013-11-xx: ++++++

#define _clChanged_ clRed
#define _XChanged_(txt) (txt->Font->Color == _clChanged_)

#define _AllMethods_ 0     // 所有的方法(含共享与不共享)
#define _SharedMethods_ -1 // 所有的共享方法

#define PATH_RES 0
#define PATH_SIL 1
#define PATH_FIG 2

#define FILETYPE_ORG 0x0047524F // 试样谱图文件
#define FILETYPE_STD 0x00445453 // 标样谱图文件
#define FILETYPE_BSL 0x004C5342 // 基线谱图文件
#define FILETYPE_MDY 0x0059444D // 修改后的谱图文件
#define FILETYPE_MTD 0x0044544D // 方法文件
#define FILETYPE_CAL 0x004C4143 // 校正文件
#define FILETYPE_RST 0x00545352 // 报告风格文件
#define FILETYPE_IST 0x00545349 // 仪器信息文件
#define FILETYPE_ICD 0x00444354 // 仪器条件文件

#define MAX_SERIES 8 // 同时打开的最大谱图数

#define MAX_STUDYBASE 400

#define NameLength 32
#define CondLength 80
#define LongCondLength 160
#define ModelLength 32
#define LongModelLength 64
#define SpecLength 64
#define ShortNoteLength 64
#define NoteLength 128
#define LongNoteLength 256
#define HugeNoteLength 1024

#define AmtUnitLength 8
#define ConcUnitLength 16
#define UnitAliasLength 16

#define VMarkLength 8
#define FMarkLength 16
#define GUIDLength 37

#define DatFileNameLength 128

#define RESBUF_LEN 2048
#define IDTBUF_LEN 512
#define TPRGBUF_LEN 512 // 256   //2012-05-xx: &&&&&&
#define GRPBUF_LEN 256

#define MAX_INSTLIST 4
#define MAXCARD 2           // 采集器的最大数
#define MAX_CARD_CHANNEL 2  // 采集器的最大通道数
#define MAX_CARDTYPE 4      // 采集器类型的最大数
#define DEFAULT_SN 0x14E831 // S-2001-11-1-050

#define CH2INST(x) (int32_t)(x / MAX_CARD_CHANNEL)
#define INSTCH2CH(x, y) (int32_t)(x + y * MAX_CARD_CHANNEL)
#define CH2INSTCH(x) (int32_t)(x % MAX_CARD_CHANNEL)

#define MAX_CONCUNIT 25
#define MAX_AMTUNIT 8

#define MAX_EVENT 32

#define MaxIOChs 7 // 最大的IO通道数(外部事件数)

#define _MaxIOCycles_ MAXINT // 最大的循环次数

#define _Pause_ TRUE
#define _Resume_ FALSE

#define _NOP_ -1 //
#define _OFF_ 0  // 关
#define _ON_ 1   // 开
#define _bJustSmplNo_ true
#define _OnStart_ true
#define _OnStop_ false
#define _INLET_ 1
#define _V_GSV_ 1

#define _RefreshUI_ true
#define _ProcessMsg_ true

#define _Float_ true
#define _Integer_ false
#define _Negative_ true
#define _Positive_ false
#define _Comma_ true
#define _ShowErr_ true

#define _PushReopenFiles_ true
#define _MultipleOpen_ true
#define _OnSelectORGSeriesItem_ true

#define MaxSmplChs (MaxIOChs - 2) // 最大的样气路数

/*#define _Method_    5   //方法名
#define _StopTM_    6   //停止时间
#define _BatchC_    7   //批号
#define _InjVol_    8   //进样体积
#define _ASMeth_    9   //AS方法号
#define _VialNo_    10  //瓶号
#define _Repeat_    11  //重复次数
#define _Finish_    12  //已完成进样数
#define _State_     13  //状态
#define _Notes_     14  //备注
*/

#define _NoSavePFRule_ true
#define _SelfExcluded_ true

/*#define _MaxSeqCycles_  MAXINT      //最大的循环次数

#define _SeqPath_   (__szSmpDataPath + "Sequence\\")
#define _SeqFile_(szName)   (__szSmpDataPath + "Sequence\\" + szName + ".seq")

#define MaxSeqStatus    S_SEQ_PRE_LOOP
*/

#define VALID_CHANNEL(X) (X >= 0 && X < MAX_CARD_CHANNEL)

#define _Customize_ (__LicenceData.Customize)
#define _AutoSampler_ (__LicenceData.AutoSampler)
#define _SlicesCalc_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowSlicesCalc) // 支持切片计算
#define _GroupCalc_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowGroupCalc)   // 支持分组计算
#define _UkPkFactor_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowUkPkFactor) // 支持未知峰校正
#define _BlankSub_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowBlankSub)     // 支持空白扣除
#define _FingerPrint_ \
    (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowFingerPrint) // 支持指纹谱图软件数据接口
#define _IdtColBasedOn_ \
    (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowIdtColBasedOn)                   // 支持面积与峰高混合定量(组分表中包含"定量基准")
#define _SequenceInj_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowSequenceInj)   // 支持序列进样
#define _ExternEvents_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowExternEvents) // 支持外部事件
#define _QCQA_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowQCQA)                 // 支持QC/QA
// (支持含量指标上下限)
#define _DataMerge_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowDataMerge) // 支持通道合并
#define _ResultsDB_ (__LicenceData.Customize > CU_STANDARD && __MROption->Head.AllowResultsDB) // 支持分析结果入库
#define _ChannelState_(nCh) (__ChannelInfo->Status[nCh])
#define _ChannelBusy_(nCh) (__ChannelInfo->Status[nCh] == BY_BUSY)
#define _IOCtrlFile_(szName) (__szMethodPath + szName + ".ioc")

//////////////////////////////////////////////////////////////////////////////////

#define MIN_FILE_VERSION 0x100
#define _n3000Last_ 0x106  // Easy3000最后的数据版本
#define _n3010First_ 0x110 // Easy3010最早的数据版本
#define _s3000Last_ "0x106"
#define _s3010First_ "0x110"
#define _nVersionNodeTypeEx_ 0x114

#define _sDLLVersion_1408_ "14.08" // analysis.dll版本号"14.08"

#define __bIdtColDLimit __bIdtColK1

/*#define _S_(szC, szE)   String((!__bEnglishEdition)?szC:szE)     //获取基于中/英文字符串    //2010-06-27: ++++++
#define	_SS_(S)		(__bEnglishEdition)?S[1]:S[0])	//2011-03-11: ++++++
*/
// 2012-05-xx: xxxxxx

enum
{
    EASY = 0,
    SEPU = 1,
    SUPER = 2,
    BKL = 3,
    QT = 4,
    SHIMADZU = 5,
    HX = 6,
    YH = 7,
    FL = 8,
    LM = 9,
    TECHCOMP = 10,
    KYD = 11,
    DYS = 12,
    CHEMS = 13,
    DYNAMICA,
};

/*enum {
    VER_STANDARD    = 0, //标准版
    VER_PLUS        = 1, //增强版
    VER_AMINO       = 2, //氨基酸版
    VER_SPIRIT      = 3, //白酒版
    VER_CALORIC     = 4, //热值版
    VER_TVOC        = 5, //TVOC版
    VER_HTA         = 6, //HTA版
    VER_MAX         = VER_HTA+1
};*/

enum // 通道号
{
    CHANNEL_NONE = -1,
    CHANNEL_A = 0,
    CHANNEL_B = 1,
    CHANNEL_C = 2,
    CHANNEL_D = 3,
    MAX_CHANNEL = 4,
    CHANNEL_OFFLINE = MAX_CHANNEL,
    CHANNEL_OFFLINE_1 = CHANNEL_OFFLINE,
    CHANNEL_OFFLINE_2,
    CHANNEL_OFFLINE_3,
    CHANNEL_OFFLINE_4,
    CHANNEL_OFFLINE_5,
    CHANNEL_OFFLINE_6,
    CHANNEL_OFFLINE_7,
    CHANNEL_OFFLINE_8,
    CHANNEL_REPORT,
    CHANNEL_A_OFFLINE,
    CHANNEL_B_OFFLINE,
    CHANNEL_C_OFFLINE,
    CHANNEL_D_OFFLINE,
    MAX_OFFLINE_CHANNEL,
};

enum // 窗体事件分类：
{
    ON_None,
    ON_Create,
    ON_Show,
    ON_Activate,
    ON_Deactivate,
    ON_CloseQuery,
    ON_Close,
    ON_Destroy,
};

enum
{
    DEBUG_START,
    DEBUG_MSG_STOP,
    DEBUG_STOP,
    DEBUG_STOP_,
};

enum // 通道状态
{
    BY_UNLINK = 0, // 未设置仪器及检测器通路
    BY_LINKED = 1, // 未登录
    BY_LOGIN = 2,  // 已登录
    BY_BUSY = 3,   // 正在采样

    CH_NONE = 0,
    CH_NOT_READY = 1,
    CH_READY = 2,
    CH_BUSY = 3,
};

enum // 串口状态
{
    PORT_NOP = 0,  // 不存在
    PORT_BUSY = 1, // 被使用
    PORT_OK = 2,   // 空闲
};

enum CARDTYPE // 采集器类型
{
    CARD_LIU = 0,
    CARD_ZHU = 1,
    CARD_MR9X = 2,
    CARD_N2000 = 3,

    CARD_UNKNOWN = -1,
};

enum CARDCONN // 通讯连接状态  //2010-06-03: ++++++
{
    CONN_ON_ERR = 0, // 未连上
    CONN_ON_COM = 1, // COM连接
    CONN_ON_USB = 2, // USB连接
};

enum PORTDETECT
{
    PORT_ERROR = 0,
    CARD_NOTREADY = 1,
    CARD_OK = 2
};

enum
{
    /*ImgIdxComOK     = 21,
    ImgIdxComErr    = 22,
    ImgIdxUsbOK     = 23,
    ImgIdxUsbErr    = 24,
    ImgIdxIO_OK     = 25,
    ImgIdxIO_Err    = 26,
    ImgIdxUsbOK_1   = 27,
    ImgIdxUsbOK_2   = 28,
    ImgIdxUsbOK_B   = 29,
    ImgIdxIO_OK_1   = 30,
    ImgIdxIO_OK_2   = 31,
    ImgIdxIO_OK_IO  = 32,*/

    ImgIdxComOK = 23,
    ImgIdxComErr = 24,
    ImgIdxUsbOK = 25,
    ImgIdxUsbErr = 26,
    ImgIdxIO_OK = 27,
    ImgIdxIO_Err = 28,
    ImgIdxUsbOK_1 = 29,
    ImgIdxUsbOK_2 = 30,
    ImgIdxUsbOK_B = 31,
    ImgIdxIO_OK_1 = 32,
    ImgIdxIO_OK_2 = 33,
    ImgIdxIO_OK_IO = 34,

    ImgIdxNetOK = 46,
    ImgIdxNetErr = 47,
};

enum
{
    M_BROWSE = 0,
    M_LOAD = 1,
    M_SAVEAS = 2,
    M_CALIB = 3,
};

enum FREQ_ID // 采样频率ID
{
    FREQ_HIGH = 0, // 高速(40Hz)
    FREQ_FAST = 1, // 快速(20Hz)
    FREQ_MID = 2,  // 中速(10Hz)
    FREQ_SLOW = 3, // 慢速(5Hz)
    FREQ_LOW = 4,  // 低速(2Hz)
    MAX_FREQID = FREQ_LOW + 1,
};

enum CMDID // 命令ID
{
    CMD_INITCARD = 0, // 初始化
    CMD_EXITCARD = 1, // 关闭
    CMD_SN = 2,       // SN
    CMD_STARTDAT = 3, // 开始
    CMD_STOPDAT = 4,  // 停止
    CMD_RESEND = 5,   //[重发]

    CMD_BASEFREQ = 6, //[基准频率]
    CMD_FREQ = 7,     //[通道频率]

    CMD_REMOTEON = 8, // 线控启动
    CMD_NONE = 15,
    CMD_LINKDOWN = 16,
    CMD_RECVCMD = 17,
};

enum // 谱图文件类型
{
    BY_SMP = 0, // 试样
    BY_STD = 1, // 标样
    BY_BSL = 2, // 基线
    BY_MDY = 3, // 修改谱图
    BY_DAT = 4, // DAT谱图
    BY_RAW = 5, // MR9X谱图

    BY_UVD = 6, // 紫外/可见光谱图

    BY_VSMP = 7, // VOC样气文件
    BY_VSTD = 8, // VOC标气文件
    BY_VBSL = 9, // VOC零气文件

    MAX_SMPTYPE = (BY_BSL + 1), // 最大的样品类型
    MAX_ORGTYPE = (BY_UVD + 1), //(BY_VBSL+1),  //(BY_RAW+1), //最大的谱图文件类型

    BY_UKNSMP = -1, // 未知的样品类型
    BY_UKNORG = -1, // 未知的谱图文件类型
    BY_ANYSMP = -1, // 任何样品类型
    BY_ANYORG = -1, // 任何谱图文件类型
};

enum HOTKEY_EVENT
{
    HOTKEY_NONE = 0,
    HOTKEY_START = 1,
    HOTKEY_STOP = 2,
    HOTKEY_CANCEL = 3,
    HOTKEY_SWITCH = 4,
    HOTKEY_CALIB = 5,
    HOTKEY_REPORT = 6,
    HOTKEY_REDO = 7,
    HOTKEY_OTHERS = 8
};

enum SPLITMODE
{
    SPLIT_NONE = -1,
    SPLIT_A = 0,
    SPLIT_B = 1,
    SPLIT_C = 2,
    SPLIT_D = 3,
    SPLIT_HORI = 4,
    SPLIT_VERT = 5,
    SPLIT_CROSS = 6,
};

enum SETIDTRMODE
{
    BY_ID_NEXT = 0,
    BY_ID_PREV = 1,
    BY_ID_NAME = 2,
};

enum AXISMODE // 谱图坐标范围模式
{
    AXIS_FULL = 0,    // 谱图全景
    AXIS_HIGHEST = 1, // 最高峰适应
    AXIS_HIGHER = 2,  // 次高峰适应
    AXIS_REAL = 3,    // 实时状态
    AXIS_USER = 4,    // 用户自定义
};

enum TMODE // 时间轴范围模式
{
    T_FULL = 0, // 全部时间
    T_SELF = 1, // 当前范围
    T_REAL = 2, // 实时状态
    T_USER = 3, // 用户自定义
};

enum VMODE // 信号轴范围模式
{
    V_HIGHEST = 0, // 最高峰适应
    V_HIGHER = 1,  // 次高峰适应
    V_REAL = 2,    // 实时状态
    V_USER = 3,    // 用户自定义
};

enum UNITCODE_ENUM // 单位分类
{
    UNIT_OLD = 0,     // 老版本
    UNIT_N = 0x10000, // 常规比(无单位)
    UNIT_W = 0x20000, // 重量比(单位)
    UNIT_V = 0x30000, // 体积比(单位)
    UNIT_M = 0x40000, // 摩尔比(单位)
    UNIT_X = 0x50000, // 混合比

    UNIT_MODE_1 = 0x60000, // 常规比,混合比
    UNIT_MODE_2 = 0x70000, // 常规比,重量比,体积比,摩尔比
    UNIT_MODE_3 = 0x80000, // 所有类别

    UNIT_V_MASK = 0xffff,     // 单位代码值
    UNIT_T_MASK = 0x00ff0000, // 单位代码类别

    // 体积单位因子:
    K_uL = 0, // uL
    K_mL = 3, // mL
    K_L = 6,  // L

    // 浓度单位量级:
    _PERCENT_ = 2, //%
    _milli_ = 3,   // ‰
    _ppm_ = 6,
    _ppb_ = 9,
    _ppt_ = 12,

    // HPG	//2014-12-xx: ++++++
    // QC限值算符:
    QC_OP_NONE = 0, //(无)
    QC_OP_GE = 1,   //>=
    QC_OP_LE = 2,   //<=

};

enum TUNITCODE // 时间单位代码
{
    BY_PER_MIN = 0, // min%
    BY_SECOND = 1,  // sec
    BY_MIN = 2,     // min
};

enum // 组分表的列索引
{
    IDX_Name = 1,     // 名字
    IDX_Type = 2,     // 类别
    IDX_Istd = 3,     // 内标物
    IDX_BasedOn = 4,  // 定量基准
    IDX_Time = 5,     // 保留时间
    IDX_Band = 6,     // 带宽
    IDX_Factor = 7,   // 校正因子
    IDX_K = 11,       // 扩充系数k1(分子量或发热系数)
    IDX_K1 = 12,      // 扩充系数k2(检出限)
    IDX_RefTime = 13, // 参考保留时间
    // IDX_CLower  = 14,   //控制指标(下限)
    // IDX_CUpper  = 15,   //控制指标(上限)
};

enum BASEDON // 定量基准
{
    ON_AREA = 0,   // 面积
    ON_HEIGHT = 1, // 峰高
    MAX_BASEDON,
};

enum QUANTBY // 定量方法
{
    BY_NONE = -1,
    BY_NORMAL = 0,   // 归一化
    BY_S_FACT = 1,   // 修正归一
    BY_INT_STD = 2,  // 内标法
    BY_EXT_STD = 3,  // 外标法
    BY_EXPAND = 4,   // 指数法
    BY_ISTD_PER = 5, // 内标归一	//2014-01-13: ++++++
    BY_ESTD_PER = 6, // 外标归一  //2014-01-13: ++++++
    MAX_QUANTBY,
};

enum QUALITBY // 定性模式  //2010-06-05: ++++++
{
    BY_BAND = 0,   // 时间带
    BY_WINDOW = 1, // 时间窗
    BY_SERIAL = 2, // 顺序法
};

enum CALIBZERO // 校正曲线原点定义
{
    ZERO_WITHOUT = 0,  // 不采用原点
    ZERO_WITHFROM = 1, // 采用并过原点
    ZERO_WITHONLY = 2, // 采用原点但不过原点
    ZERO_INFFROM = 3,  // 低位过零	//2014-08-12: ++++++
};
enum SGCMODE // 分段校正模式
{
    SGC_NONE = 0,
    SGC_INFER = 1, // 仅低位过零
    SGC_MULTI = 2, // 点到点连线
};

enum // 组分类型
{
    ID_NORMAL = 0,     // 常规组分(Ordnr, ordinary)
    ID_ISTD = 1,       // 内标组分
    ID_REFER = 2,      // 参考组分(Refer)
    ID_SATUR = 3,      // 饱和组分(其百分含量可用100%减去其余组分的百分含量总和)
    ID_OUTER = 4,      // 外部组分(其含量由其它方法确定, 或来自其它谱图分析结果)
    ID_MIXER = 5,      // 混合组分(指多个组分的混合峰, 可在二维柱上进一步分离)
    ID_RISTD = 6,      // 内标参考组分	//2013-01-06: ++++++
    ID_CONT_GROUP = 7, // 连续组名			//2013-01-06: ++++++    //2013-09-07: &&&&&&
    MAX_ID_TYPE,
};

enum PKWD_MODE // 变宽模式
{
    WD_FIXED = 0,   // 固定不变
    WD_TDOUBLE = 1, // 倍宽
    WD_AUTO = 2,    // 自适应
};

enum TAIL_MODE // 拖尾峰检测模式
{
    TAIL_0 = 0, // 不检测拖尾峰
    TAIL_1 = 1, // 弱拖尾检测
    TAIL_2 = 2, // 强拖尾检测
};

enum EVENT // 事件标志		//***
{
    PEAK_START = 0,          // 调整起始点
    PEAK_END = 1,            // 调整结束点
    PEAK_MOVE_SPLIT = 2,     // 移动分割线
    PEAK_ADD_SPLIT = 3,      // 增加分割线
    PEAK_DEL_SPLIT = 4,      // 删除分割线
    PEAK_ADD_ONLYONE = 5,    // 增加单一峰
    PEAK_DELETE = 6,         // 删除峰
    BASE_VALLEY = 7,         // 谷谷基线
    BASE_TOGETHER = 8,       // 强制垂切(峰合并)
    BASE_TAIL_TANGENT = 9,   // 强制拖尾(后切线切割)
    BASE_FRONT_TANGENT = 10, // 前切线切割
    BASE_LOCK = 11,          // 基线锁定      //实时事件
    BASE_NEGATIVE = 12,      // 指定负峰区    //实时事件
    BASE_M_NEGATIVE = 13,    // 指定M型负峰区 //实时事件

    // 以下事件暂不使用：
    BASE_MERGE_UPMOST = 14, // 并入极高峰
    BASE_XXX = 15,          //(保留)
    BASE_FORW_HORI = 16,    // 向前水平基线
    BASE_BACK_HORI = 17,    // 向后水平基线

    PARA_WIDTH = 18, // 调整峰宽参数
    PARA_NOISE = 19, // 调整噪声参数
    PARA_DRIFT = 20, // 调整漂移参数

    // 实时事件的后处理引用:
    BASE_TOGETHER_ = 32, // 强制垂切(峰合并)		//后处理事件
    BASE_TAIL_TANGENT_,  // 强制拖尾(后切线切割)	//后处理事件
    BASE_NEGATIVE_,      // 指定负峰区	//后处理事件(尚未实现)
    BASE_M_NEGATIVE_,    // 指定M型负峰区	//后处理事件(尚未实现)
    BASE_MERGE_UPMOST_,  // 并入最高峰	//后处理事件(尚未实现)

    // 无事件
    NOEVENT = -1
};

enum // 谱图类别：
{
    ON_CHR = 0, // 色谱数据
    ON_UVD = 1, // 紫外/可见光谱数据

    _MinSuperType_ = ON_CHR,
    _MaxSuperType_ = ON_UVD,
};

enum // 综合结果中的项目类别
{
    ITEM_NONE = -1,
    ITEM_COMPOUND = 0,   // 单一组分
    ITEM_CONT_GROUP = 1, // 连续组
    ITEM_DISC_GROUP = 2, // 间断组
    ITEM_SUM_OF_UKS = 3, // 未知峰合计
    ITEM_OUTER_COMP = 4, // 外部组分  //2013-09-07: ++++++
    ITEM_PRIME_COMP = 5, // 主要组成  //HPG	//2014-12-xx: ++++++
    MAX_SYN_ITEM_TYPE,
};

enum // 综合结果中的OkState
{
    EVAL_NONE = -1,
    EVAL_UNDETECT = 0, // 未检出
    EVAL_LOWER = 1,    // 偏低
    EVAL_UPPER = 2,    // 偏高
    EVAL_OK = 3,       // OK
    EVAL_ANY = 4,      // cLower==MINFLOAT && cUpper==MAXFLOAT
    MAX_SYN_OK_STATE,
};

enum NodeType // 数据节类型定义 ==============================================
{
    // 老版本(<0x114)的节点定义: ////////////////////////////////////////////////////
    NT_SMPCAT = 0, // 样品类表

    NT_SMPINF = 1,  // 样品信息
    NT_CPTCONC = 2, // 样品组分浓度表

    NT_INSTCONDHEAD = 3, // 仪器条件头信息
    NT_PROGITEMS = 5,    // 升温程序
    NT_GRADITEMS = 7,    // 洗脱程序

    // 方法:
    NT_METHODHEAD = 4, // 方法头信息
    NT_TPRG = 6,       //    手动事件表
    NT_IDT = 8,        //    组分表
    NT_GROUP = 9,      //    分组表
    NT_JGROUP = 12,    // 酒专用分组表
                       //...

    NT_RESULT = 10, // 结果表
    NT_SYNRES = 11, // 综合结果

    NT_SMPBASE = 17,   // 基线数据
    NT_SMPDATA = 18,   // 谱图数据
    NT_ORGAXIS = 23,   // ORG坐标系统
    NT_STUDYBASE = 27, // 学习用基线数据
    NT_FILEID = 28,    // 文件GID
    NT_ORGAXISEX = 29, // ORG坐标系统扩充
    NT_SMPINJ = 13,    // 进样信息
    NT_ORG3010EX = 14, // ORG附加项信息(对3010及其以后版本有效)
    NT_BLANKHEAD = 15, // 空白头信息
    NT_BLANKRES = 16,  // 空白结果

    NT_CALIBHEAD = 19,    // 校正数据
    NT_STDLIST = 20,      // 标样列表
    NT_METRICLIST = 21,   // 标样列表
    NT_CONCRESPLIST = 22, // 标样浓度响应表
    NT_STDAMT = 24,       // 标样配样数据
    NT_STDCPT = 25,       // 标样组分浓度
    NT_XAF = 26,          // 校正曲线浓度轴放大因子

    // 以下为修改内容: --------------------------------------
    NT_SMPCAT_MDY = 30,       // 样品类表
    NT_SMPINF_MDY = 31,       // 样品信息
    NT_CPTCONC_MDY = 32,      // 样品组分浓度表
    NT_INSTCONDHEAD_MDY = 33, // 仪器条件头信息
    NT_PROGITEMS_MDY = 34,    // 升温程序
    NT_GRADITEMS_MDY = 35,    // 洗脱程序

    // 方法:
    NT_METHODHEAD_MDY = 36, // 方法头信息
    NT_TPRG_MDY = 37,       //    手动事件表
    NT_IDT_MDY = 38,        //    组分表
    NT_GROUP_MDY = 39,      //    分组表
    NT_JGROUP_MDY = 40,     // 酒专用分组表
                            //...

    NT_RESULT_MDY = 42, // 结果表
    NT_SYNRES_MDY = 43, // 综合结果

    NT_SMPBASE_MDY = 44,   // 基线数据
    NT_SMPDATA_MDY = 45,   // 谱图数据
    NT_ORGAXIS_MDY = 46,   // ORG坐标系统
    NT_STUDYBASE_MDY = 47, // 学习用基线数据
    NT_ORGAXISEX_MDY = 48, // ORG坐标系统扩充
    NT_SMPINJ_MDY = 49,    // 进样信息
    NT_ORG3010EX_MDY = 50, // ORG附加项信息(对3010及其以后版本有效)
    NT_BLANKHEAD_MDY = 51, // 空白头信息
    NT_BLANKRES_MDY = 52,  // 空白结果

    NT_MaxItems = (64 - 8), // 数据节点最大数目(=56)
    NT_NONE = -1,

    // 新版本(>=0x114)的节点定义: ///////////////////////////////////////////////////
    _NT_NONE = -1,
    _NT_MaxItems = (256 - 16),      // 数据节点最大数目(=15*16=240)
    _NT_OrgData = 0,                // 原始数据节点的起始编码
    _NT_MdyData = _NT_MaxItems / 2, // 修改数据节点的起始编码(120)

    // 以下为原始数据节点定义: --------------------------------------
    // 分析项目:     MaxItems = 8
    _NT_PROJECT = 0,
    _NT_SMPCAT = _NT_PROJECT + 0, // 样品类信息

    // 样品数据:     MaxItems = 8
    _NT_SAMPLE = _NT_PROJECT + 8,
    _NT_SMPINF = _NT_SAMPLE + 0,  // 样品信息
    _NT_CPTCONC = _NT_SAMPLE + 1, // 样品组分浓度表
    _NT_SMPINJ = _NT_SAMPLE + 2,  // 进样信息

    // 仪器信息:     MaxItems = 12
    _NT_INSTRUMENT = _NT_SAMPLE + 8,
    _NT_INSTHEAD = _NT_INSTRUMENT + 0,   // 仪器头信息
    _NT_OVENINFO = _NT_INSTRUMENT + 1,   // 柱箱信息
    _NT_INLETINFO = _NT_INSTRUMENT + 2,  // 进样口信息
    _NT_COLUMNINFO = _NT_INSTRUMENT + 3, // 柱信息
    _NT_DETECTINFO = _NT_INSTRUMENT + 4, // 检测器信息
    _NT_AUXINFO = _NT_INSTRUMENT + 5,    // 辅助区信息
    _NT_PUMPINFO = _NT_INSTRUMENT + 6,   // 泵信息
    _NT_SIGNALINFO = _NT_INSTRUMENT + 7, // 信号通路

    // 仪器条件:     MaxItems = 20
    _NT_INSTCOND = _NT_INSTRUMENT + 12,
    _NT_INSTCONDHEAD = _NT_INSTCOND + 0,    // 仪器条件头信息
    _NT_OVENCOND = _NT_INSTCOND + 1,        //
    _NT_INLETCOND = _NT_INSTCOND + 2,       //
    _NT_COLUMNCOND = _NT_INSTCOND + 3,      //
    _NT_DETECTCOND = _NT_INSTCOND + 4,      //
    _NT_AUXCOND = _NT_INSTCOND + 5,         //
    _NT_PUMPCOND = _NT_INSTCOND + 6,        //
    _NT_SIGNALCOND = _NT_INSTCOND + 7,      //
    _NT_OVENTEMP_PRG = _NT_INSTCOND + 8,    // 柱温程序
    _NT_INLETTEMP_PRG = _NT_INSTCOND + 9,   // 进样口温度程序
    _NT_COLUMNPF_PRG = _NT_INSTCOND + 10,   // 柱压/流量程序
    _NT_MAKEUPFLOW_PRG = _NT_INSTCOND + 11, // 尾吹流量程序
    _NT_PUMPGRAD_PRG = _NT_INSTCOND + 12,   // 泵梯度洗脱程序
    _NT_WAVELENGTH_PRG = _NT_INSTCOND + 13, // 波长程序

    _NT_AUXCONDEXS = _NT_INSTCOND + 14, // 扩充的辅助区条件

    // 谱图数据:     MaxItems = 8
    _NT_CHROMDATA = _NT_INSTCOND + 20,
    _NT_FILEID = _NT_CHROMDATA + 0,    // 文件GUID
    _NT_ORG3010EX = _NT_CHROMDATA + 1, // ORG附加项信息(对3010及其以后版本有效)
    _NT_ORGAXIS = _NT_CHROMDATA + 2,   // ORG坐标系统
    _NT_ORGAXISEX = _NT_CHROMDATA + 3, // ORG坐标系统扩充
    _NT_SMPDATA = _NT_CHROMDATA + 4,   // 谱图数据
    _NT_STUDYBASE = _NT_CHROMDATA + 5, // 学习用基线数据
    _NT_SMPBASE = _NT_CHROMDATA + 6,   // 基线数据

    // 峰处理方法:   MaxItems = 8
    _NT_PROCMETHOD = _NT_CHROMDATA + 8,
    _NT_METHODHEAD = _NT_PROCMETHOD + 0, // 方法头信息
    _NT_TPRG = _NT_PROCMETHOD + 1,       // 手动事件表
    _NT_IDT1407 = _NT_PROCMETHOD + 2,    // 组分表1407及之前版本内容	//2014-08-12: &&&&&&
    _NT_GROUP = _NT_PROCMETHOD + 3,      // 分组表
    _NT_JGROUP = _NT_PROCMETHOD + 4,     // 酒专用分组表
    _NT_IDT1408Ex = _NT_PROCMETHOD + 5,  // 组分表1408版扩充内容		//2014-08-12: ++++++

    // 峰处理结果:   MaxItems = 8
    _NT_PROCRESULT = _NT_PROCMETHOD + 8,
    _NT_RESULT = _NT_PROCRESULT + 0,    // 结果表
    _NT_BLANKHEAD = _NT_PROCRESULT + 1, // 空白头信息
    _NT_BLANKRES = _NT_PROCRESULT + 2,  // 空白结果
    _NT_SYNRES = _NT_PROCRESULT + 3,    // 综合结果

    // 校正数据:     MaxItems = 8
    _NT_CALIBDATA = _NT_PROCRESULT + 8,
    _NT_CALIBHEAD = _NT_CALIBDATA + 0,    // 校正数据头信息
    _NT_STDLIST = _NT_CALIBDATA + 1,      // 标样文件表
    _NT_CONCRESPLIST = _NT_CALIBDATA + 2, // 各标样浓度响应表
    _NT_METRICLIST = _NT_CALIBDATA + 3,   // 各标样配样信息
    _NT_STDAMT = _NT_CALIBDATA + 4,       // 各标样配样数据
    _NT_STDCPT = _NT_CALIBDATA + 5,       // 各标样组分浓度
    _NT_XAF = _NT_CALIBDATA + 6,          // 校正曲线浓度轴放大因子
};

enum // 峰标注
{
    PKMK_NONE = 0,
    PKMK_RTIME = 1,  // 保留时间
    PKMK_HEIGHT = 2, // 峰高
    PKMK_AREA = 4,   // 峰面积
    PKMK_NOS = 8,    // 峰号
    PKMK_NAME = 16,  // 峰名
    PKMK_CONC = 32,  // 含量
};

enum
{
    // 事件设置各栏目：
    IOS_Remark = 1, // 事件别名
                    //  IOS_InitSt,       //初始状态
    IOS_DefaSt,     // 默认状态  //2011-04-16: ++++++
    IOS_SetvSt,     // 设定状态
    IOS_ActuSt,     // 实际状态
    IOS_SmplSt,     //(多路)样气(选中)状态

    // 事件程序各栏目：
    IOC_Part = 1,  // 运行时段
    IOC_Time = 2,  // 时间[min]
    IOC_IONos = 3, // IO通道(事件号)
    IOC_State = 4, // 事件状态(0-关, 1-开)
    IOC_Prgrs = 5, // 进度指针
};

enum // 运行时段
{
    T_UNKNOWN = 0,
    T_PRERUN = 1,  // 前运行
    T_RUNNING = 2, // 运行中
    T_POSTRUN = 3, // 后运行

    // 循环模式:
    LOOP_NONE = 0,     // 不循环
    LOOP_INFINITY = 1, // 无限循环
    LOOP_USER = 2,     // 用户指定循环数
};

enum
{
    S_IOC_READY = 0,      // 空闲
    S_IOC_PRERUN = 1,     // 前运行(进样前)
    S_IOC_WAIT_INJE = 2,  // 等进样回应信号(收到线控信号或界面点击“开始”)
    S_IOC_RUNNING = 3,    // 运行中(数据采集)
    S_IOC_POSTRUN = 4,    // 后运行(停止后)
    S_IOC_LOOPWAIT = 5,   // 等待循环
    S_IOC_WAIT_IST_READY, // 等仪器Ready       //2011-05-23: ++++++
    S_IOC_MAX = S_IOC_WAIT_IST_READY + 1,
};

enum
{
    S_NOS = 0,
    S_INJSPEC = 1,
    S_RESP = 2,
    S_CONC = 3,
    S_W = 4,
    S_X = 5,
    S_Y = 6,
    S_SD = 7
};

enum
{
    // 仪器就绪状态：
    IST_UNLINK = 0,      // 未连机	//2010-08-05: ++++++
    IST_NOT_READY = 1,   // 未就绪    //2010-08-05: &&&&&&
    IST_READY = 2,       // 就绪      //2010-08-05: &&&&&&
    IST_PRE_RUN = 3,     // 预运行	//2011-04-30: ++++++
    IST_ON_INJECT = 4,   // 进样中    //2010-08-05: &&&&&&
    IST_POST_RUN = 5,    // 后运行	//2011-04-30: ++++++
    IST_AUTO_INJECT = 6, // 自动进样	//2011-04-30: ++++++
    MAX_IST_STATE = IST_POST_RUN + 1,

    // 进样运行状态：
    RUN_NONE = 0,    // 未进样(空闲)
    RUN_RUNNING = 1, // 运行中
    RUN_STOP = 2,    // 停止
    RUN_ABORT = 3,   // 放弃
    MAX_RUN_STATE = RUN_ABORT + 1,
};

enum // 仪器启/停关联的通道
{
    TGR_CH_A = 0x01, // 1-关联到通道1
    TGR_CH_B = 0x02, // 2-关联到通道2
    TGR_CH_C = 0x04, // 4-关联到通道3
    TGR_CH_D = 0x08, // 8-关联到通道4
};

enum INST_UNIT_TYPE // 仪器部件分类
{
    IUT_UNINSTALLED = -1, // 部件未安装	//2011-05-18: ++++++
    IUT_INST = 0,         // 仪器整机
    IUT_OVEN = 1,         // 柱箱
    IUT_INLET = 2,        // 进样口
    IUT_COLUMN = 3,       // 色谱柱
    IUT_DETECT = 4,       // 检测器
    IUT_AUX = 5,          // 辅助区
    IUT_PUMP = 6,         // 泵
    IUT_SUPPRESS = 7,     // 抑制器
};

enum INST_TYPE // 仪器类别
{
    IST_GC = 0, // 气相色谱(Gas Chromatography)
    IST_LC = 1, // 液相色谱(Liquid Chromatography)
    IST_IC = 2, // 离子色谱(Ion Chromatography)
    IST_CE = 3, // 毛细管电泳(Capillary Electrophoresis)
    IST_MAX = IST_CE + 1,
};

enum VAL_MODE // 柱温模式
{
    VAL_AMBIENT = -1,     // 环境值(Ambient)
    VAL_CONSTANT = 0,     // 恒定值(Contant)
    VAL_PROGRAMMABLE = 1, // 可编程(Programmable)
};

enum PUMP_TYPE // 泵类别
{
    PMP_CONSTANT = 0, // 恒流(Constant)
    PMP_2_UNITS = 1,  // 二元(2-Units)
    PMP_3_UNITS = 2,  // 三元(3-Units)
    PMP_4_UNITS = 3,  // 四元(4-Units)
};

enum INJECT_MODE // 进样方式
{
    INJ_MANUAL = 0, // 手动进样(Manual)
    INJ_GSV = 1,    // 气体进样阀(Gas Sampling Valve)
    INJ_ALS = 2,    // 自动进样器(Auto Sampler)
    INJ_ALS120 = 3, // ALS120自动进样器(Auto Sampler)
};

enum INLET_TYPE // 进样口类别
{
    INL_GC = 0,
    INL_GC_PIP = INL_GC + 0, // 填充柱进样口(Packed Injection Port)
    INL_GC_SSL = INL_GC + 1, // 毛细管分流/不分流进样器(Capillary Split/Splitless Inlet)
    INL_GC_COC = INL_GC + 2, // 柱头冷却(Cool On-Column)
    INL_GC_PTV = INL_GC + 3, // 可编程温度汽化(Programmable Temperature Vaporization)
    INL_GC_VI = INL_GC + 4,  // 挥发物接口(Volatiles Interface)

    INL_LC = INL_GC_VI + 1,
    INL_LC_7725 = INL_LC + 0, // Rheodyne 7725/7725i进样阀
    INL_LC_9725 = INL_LC + 1, // Rheodyne 9725/9725i进样阀
    INL_LC_3725 = INL_LC + 2, // Rheodyne 3725系列进样阀(3725/3725i, 3725-038/3725i-038)

    INL_UNKNOWN = INL_LC_3725 + 1, // 其它进样口	//2011-05-27: ++++++

    INL_MAX = INL_UNKNOWN + 1,

    // 老的编码:
    INL_GC_SLIP_ = 1,  // 不分流
    INL_GC_SIP_ = 2,   // 分流
    INL_GC_SSLIP_ = 3, // 分流/不分流
    INL_LC_IP_ = 4,    // LC进样
    INL_LC_IIP_ = 5,   // LC进样(带联动)
};

enum COLUMN_TYPE // 色谱柱类别
{
    COL_GC = 0,
    COL_GC_PC = COL_GC + 0,  // 填充柱(Packed)
    COL_GC_CC = COL_GC + 1,  // 小口径柱(Capillary)
    COL_GC_WBC = COL_GC + 2, // 大口径柱(Wide-Bore Capillary)

    COL_LC = COL_GC_WBC + 1,
    COL_LC_HPLC = COL_LC + 0,  // HPLC柱
    COL_LC_AMINO = COL_LC + 1, // 氨基酸柱
    COL_LC_GPC = COL_LC + 2,   // GPC柱

    COL_IC = COL_LC_GPC + 1,
    COL_IC_ANION = COL_IC + 0,  // IC阴离子柱
    COL_IC_CATION = COL_IC + 1, // IC阳离子柱

    COL_UNKNOWN = COL_IC_CATION + 1, // 其它色谱柱	//2011-05-27: ++++++

    COL_MAX = COL_UNKNOWN + 1,

    // 老的编码:
    COL_GC_WBC_ = 1, // 大口径柱
    COL_GC_CC_ = 2,  // 小口径柱

    COL_LC_ANA_ = 3,  // HPLC分析柱
    COL_LC_PRE_ = 4,  // HPLC制备柱
    COL_GPC_ANA_ = 5, // GPC分析柱
    COL_GPC_PRE_ = 6, // GPC制备柱
    COL_AN_PRE_ = 7,  // 氨基酸柱

    COL_IC_ANION_ = 8,  // IC阴离子柱
    COL_IC_CATION_ = 9, // IC阳离子柱
};

enum DETECT_TYPE // 检测器类别
{
    DET_GC = 0,
    DET_GC_FID = DET_GC + 0, // 火焰离子化
    DET_GC_TCD = DET_GC + 1, // 热导
    DET_GC_ECD = DET_GC + 2, // 电子捕获
    DET_GC_NPD = DET_GC + 3, // 氮磷
    DET_GC_FTD = DET_GC + 3, // 火焰热离子化
    DET_GC_FPD = DET_GC + 4, // 火焰光度
    DET_GC_PID = DET_GC + 5, // 光离子化
    DET_GC_HID = DET_GC + 6, // 氦离子化
    DET_GC_MSD = DET_GC + 7, // 质谱
    // 2011-08-18: ++++++
    DET_GC_uTCD, // 微热导
    DET_GC_uECD, // 微电子捕获
    DET_GC_SCD,  // 硫化学发光
    DET_GC_MAX,

    DET_LC = DET_GC + 16,
    DET_LC_UVD = DET_LC + 0,  // 紫外/可见光
    DET_LC_RID = DET_LC + 1,  // 示差折光
    DET_LC_DAD = DET_LC + 2,  // 二极管阵列
    DET_LC_FD = DET_LC + 3,   // 荧光
    DET_LC_ELSD = DET_LC + 4, // 蒸发光散射
    DET_IC_CD = DET_LC + 5,   // 电导
    DET_IC_ECD = DET_LC + 6,  // 电化学
    DET_LC_MAX,               // 2011-08-18: ++++++

    DET_UNKNOWN = DET_LC + 16, // 其它检测器	//2010-07-14: ++++++

    DET_TYPE_MAX = DET_UNKNOWN + 1, // 2011-08-18: ++++++

    DET_MAX = DET_GC_MAX + (DET_LC_MAX - DET_LC) + 1, // 2011-08-18: &&&&&&

    // 老的编码:
    DET_GC_FTD_ = 5,

    DET_LC_UVD_ = 6,
    DET_LC_RID_ = 7,
    DET_LC_DAD_ = 8,
    DET_LC_FD_ = 9,
    DET_LC_ELSD_ = 10,

    DET_IC_CD_ = 11,
    DET_IC_ECD_ = 12,
};

/*enum {
    S_SEQ_READY         = 0,    //空闲
    S_SEQ_PREPARE       = 1,    //进样前准备
    S_SEQ_RUNNING       = 2,    //进样分析中
    S_SEQ_PRE_REPEAT    = 3,    //当前项重复前等待
    S_SEQ_PRE_NEXTITEM  = 4,    //下一项运行前等待(相当于“新方法加载后等待”)
    S_SEQ_WAIT_IST_READY= 5,    //等仪器Ready      //&&&新版反控
    S_SEQ_WAIT_AS_STANDBY,      //等进样器待机     //&&&新版反控
    S_SEQ_PRE_LOOP,             //循环前等待
};*/

enum // 未知峰校正因子类型
{
    UPF_ZERO = 0, // 计零
    UPF_USER = 1, // 手工输入
    UPF_IDp2 = 2, // 组分索引+2
};

enum
{
    // 采集卡号:
    CARD_1 = 0,
    CARD_2 = 1,

    // 串口AD卡号:
    COM_ADC_1 = 0, //
    COM_ADC_2 = 1, //

    // USB端口号:
    USB_NIL = -1, //
    USB_1 = 0,    //
    USB_2 = 1,    //
};

enum
{
    COMM_LOAD = 1,   // Load
    COMM_UNLOAD = 2, // UnLoad
    COMM_RELOAD = 3, // ReLoad
};

enum // 密匙
{
    KEY_ID_1 = 0x387764,
};

enum // 通讯协议代码
{
    PROTOCOL_NORMAL = 0, // 四字节协议
    PROTOCOL_N2000 = 1,  // N2000
    PROTOCOL_T2000 = 2,  //
    PROTOCOL_GC7900 = 3,
    PROTOCOL_IC1000 = 4,
    PROTOCOL_IC1010 = 5,
    PROTOCOL_GC7980 = 6,

    PROTOCOL_FL2200 = 0x10,

    PROTOCOL_GC6890 = 0x20, // 2011-01-18: ++++++
};

// 特殊SN:
#define _SN3010Plus_ 0x1A5B06 //(或0x165B06): 2007年7月第7批第7号
#define _SN3010ACST_ 0x1A9F87 //(或0x169F87): 2008年8月第8批第8号

enum // 采集器基本版本号(数据包中A字节的d4~d2，最多可分配8个版本)
{
    // 单一串口卡(使用CS5513)的版本号编码:
    FWC_3000FS10 = 0x0,   // FS=1.0V, Easy3000
    FWC_NOLDFS10 = 0x1,   // FS=1.0V, N3000(不带超限修正)
    FWC_NNEWFS10 = 0x2,   // FS=1.0V, N3000(带超限修正)
    FWC_3000FS15 = 0x3,   // FS=1.5V, Easy3000
    FWC_NNEWFS15 = 0x4,   // FS=1.5V, N3000
    FWC_3000FS15E = 0x5,  // FS=1.5V, Easy3000E(英文版)
    FWC_3010Plus15 = 0x6, // FS=1.5V, Easy3010Plus
    FWC_3010ACST15 = 0x7, // FS=1.5V, Easy3010A/C/S/T
                          // 由特殊SN派生的附加版本号:
    FWC_3010Plus10 = 0x8, // FS=1.0V, Easy3010Plus (_SN3010Plus_)
    FWC_3010ACST10 = 0x9, // FS=1.0V, Easy3010ACST (_SN3010ACST_)

    // 单一USB接口卡的版本号编码:
    FWU_NIL = 0x0,        // 无扩充版本号
    FWU_IO_ONLY = 0x1,    // 纯IO卡
    FWU_3010ADIO15 = 0x2, // FS=1.5V, Easy3010ADIO
    FWU_C2U_EASY = 0x3,   //(Easy3000/N3000)串转USB卡
    FWU_C2U_N2000 = 0x4,  // N2000串转(Easy3000/N3000)USB卡
    FWU_3010SExx15 = 0x5, // FS=1.5V, Easy3010
    FWU_3010Plus15 = 0x6, // FS=1.5V, Easy3010Plus
    FWU_3010ACST15 = 0x7, // FS=1.5V, Easy3010/A/C/S/T
    FWU_C2U_IC1010 = 0x8, // IC1010串转USB卡
    FWU_3010HTAx15 = 0x9, // FS=1.5V, Easy3010HTA

    // 新增的版本号编码:
    FW_MinNewCode = 0xA,

    // 双接口卡(使用TI/CS5532)的版本号编码:
    // TI芯片：
    FWX_3010TIxx = 0xA,
    FWX_3010SExx125ti = 0xA, // tiFS=+/-1.25V, Easy3010SE
    FWX_3010Plus125ti = 0xB, // tiFS=+/-1.25V, Easy3010Plus
    FWX_3010ACST125ti = 0xC, // tiFS=+/-1.25V, Easy3010A/C/S/T
                             // CS5532芯片：
    FWX_3010CS32 = 0xD,
    FWX_3010SExx125cs = 0xD, // csFS=+/-1.25V, Easy3010SE
    FWX_3010Plus125cs = 0xE, // csFS=+/-1.25V, Easy3010Plus
    FWX_3010ACST125cs = 0xF, // csFS=+/-1.25V, Easy3010A/C/S/T

    _MaxComFirmWare_ = 0xF,

    // 单一USB接口卡的版本号编码:
    // TI芯片：
    FWU_3010TIxx = 0x10,
    FWU_3010HTAx125ti = 0x10, // tiFS=+/-1.25V, Easy3010HTA
    FWU_3010ADIO125ti = 0x11, // tiFS=+/-1.25V, Easy3010ADIO
                              // CS5532芯片：
    FWU_3010CS32 = 0x12,
    FWU_3010HTAx125cs = 0x12, // csFS=+/-1.25V, Easy3010HTA
    FWU_3010ADIO125cs = 0x13, // csFS=+/-1.25V, Easy3010ADIO

    // 电力系统专用版:
    FWU_3010DLmin = 0x16,
    FWU_3010DLxx15cs = 0x16,  // csFS=1.5V, Easy3010DL
    FWU_3010DLxx125ti = 0x17, // tiFS=+/-1.25V, Easy3010DL
    FWU_3010DLxx125cs = 0x18, // csFS=+/-1.25V, Easy3010DL
    FWU_3010DLmax = FWU_3010DLxx125cs,

    // GC7900串转USB卡:
    FWU_C2U_GC7900min = 0x1A,
    FWU_C2U_GC7900SE = 0x1A,   // GC7900串转USB(标准版)
    FWU_C2U_GC7900Plus = 0x1B, // GC7900串转USB(P版)
    FWU_C2U_GC7900ACST = 0x1C, // GC7900串转USB(A/C/S/T版)
    FWU_C2U_GC7900HTA = 0x1D,  // GC7900串转USB(HTA版)
    FWU_C2U_GC7900THTA = 0x1E, // GC7900串转USB(THTA版)
    FWU_C2U_GC7900DL = 0x1F,   // GC7900串转USB(DL)
    FWU_C2U_GC7900max = 0x1F,

    // 2011-05-01: ++++++
    // 网卡:
    FWN_NET_min = 0x40,
    FWN_NET_GC6890, // GC6890	//2011-05-27: &&&&&&
    FWN_NET_A90,    // A90       //2011-05-27: &&&&&&
    FWN_NET_1949,   // A90       //2011-05-27: &&&&&&

    _MaxUsbFirmWare_ = 0xFF,
};

typedef struct tagTMyPoint
{
    double x;
    double y;
} TMyPoint;

typedef struct tagTSeriesOffset
{
    int32_t Index;
    double x;
    double y;
} TSeriesOffset;

typedef union
{
    DWORD d;
    WORD w[2];
    BYTE b[4];
} TCtlParam;
